'''
Description: 
Author: Zilu
Date: 2021-11-10 15:19:26
Version: 
LastEditTime: 2021-11-10 15:32:16
LastEditors: Zilu
'''

# 线程使用自己的局部变量不容易混淆变量值，但变量在线程间的传递却更麻烦
# 可以使用 ThreadLocal 
import threading

localSchool = threading.local()

def processStudent():
    # 获取当前线程相关的 student
    std = localSchool.student
    print('Hello, %s (in %s)' % (std, threading.current_thread().name))

def processThread(name):
    localSchool.student = name
    processStudent()

t1 = threading.Thread(target=processThread,args=('Alice',))
t2 = threading.Thread(target=processThread,args=('Bob',))
t1.start()
t2.start()
t1.join()
t2.join()

# ThreadLocal最常用的地方就是为每个线程绑定一个数据库连接，HTTP请求，用户身份信息等，
# 这样一个线程的所有调用到的处理函数都可以非常方便地访问这些资源。


